package com.fcscs.cservice.gwt.client;

import java.util.List;
import java.util.Map;

import com.fcscs.cservice.common.CServiceCommonEnums.EditableCategoryEnum;
import com.fcscs.cservice.domain.AuthenticationConfig;
import com.fcscs.cservice.domain.ConstantsLanguageValue;
import com.fcscs.cservice.domain.Country;
import com.fcscs.cservice.domain.DedicatedVideoConfig;
import com.fcscs.cservice.domain.ExpressCheckInConfig;
import com.fcscs.cservice.domain.FieldEditability;
import com.fcscs.cservice.domain.HouseKeepingConfig;
import com.fcscs.cservice.domain.IGuestUserProfileView;
import com.fcscs.cservice.domain.IGuestUserView;
import com.fcscs.cservice.domain.InterfaceConfig;
import com.fcscs.cservice.domain.InterfaceConfiguration;
import com.fcscs.cservice.domain.Language;
import com.fcscs.cservice.domain.Nationality;
import com.fcscs.cservice.domain.PaymentMethod;
import com.fcscs.cservice.domain.RoomStatus;
import com.fcscs.cservice.domain.State;
import com.fcscs.cservice.domain.Title;
import com.fcscs.cservice.domain.model.CountryView;
import com.fcscs.cservice.domain.model.EditabilityConf;
import com.fcscs.cservice.domain.model.ReservationConfView;
import com.fcscs.cservice.domain.model.StateView;
import com.google.gwt.user.client.rpc.AsyncCallback;

public interface CServiceCommonServiceAsync {

	void getCountryList(long propId, AsyncCallback<List<Country>> callback);

	void getCountryViewList(long propId,
			AsyncCallback<List<CountryView>> callback);

	void getLanguageList(long propId, AsyncCallback<List<Language>> callback);

	void getNationalityList(long propId,
			AsyncCallback<List<Nationality>> callback);

	void getPayMethodList(long propId,
			AsyncCallback<List<PaymentMethod>> callback);

	void getRoomStatusList(long propId, AsyncCallback<List<RoomStatus>> callback);

	void getRsvConfView(long propId, AsyncCallback<ReservationConfView> callback);

/*	void getRsvStatusList(long propId,
			AsyncCallback<List<ReservationStatus>> callback);*/

	void getStateList(long countryId, AsyncCallback<List<State>> callback);

	void getStateViewList(long countryId,
			AsyncCallback<List<StateView>> callback);

	void getTitleList(long propId, AsyncCallback<List<Title>> callback);

	void isCountryTaken(long propId, String country, Long id,
			AsyncCallback<Boolean> callback);

	void isLanguageTaken(long propId, String language, Long id,
			AsyncCallback<Boolean> callback);

	void isNationalityTaken(long propId, String nationality, Long id,
			AsyncCallback<Boolean> callback);

	void isPayMethodTaken(long propId, String method, Long id,
			AsyncCallback<Boolean> callback);

	void isPropertyConfTaken(long orgId, long propId, Long id,
			AsyncCallback<Boolean> callback);

	void isRoomStatusTaken(long propId, String status, Long id,
			AsyncCallback<Boolean> callback);

	void isRsvStatusTaken(long propId, String status, Long id,
			AsyncCallback<Boolean> callback);

	void isStateTaken(long propId, long countryId, String state, Long id,
			AsyncCallback<Boolean> callback);

	void isTitleTaken(long propId, String title, Long id,
			AsyncCallback<Boolean> callback);

	void saveCountry(Country country, AsyncCallback<Country> callback);

	void saveLanguage(Language language, AsyncCallback<Language> callback);

	void saveNationality(Nationality nationality,
			AsyncCallback<Nationality> callback);

	void savePayMethod(PaymentMethod payMethod,
			AsyncCallback<PaymentMethod> callback);

/*	void saveReservationStatus(ReservationStatus reservationStatus,
			AsyncCallback<ReservationStatus> callback);*/

	void saveRoomStatus(RoomStatus roomStatus,
			AsyncCallback<RoomStatus> callback);

	void saveState(State state, AsyncCallback<State> callback);

	void saveTitle(Title title, AsyncCallback<Title> callback);

	void getEditabilityConf(long propId, List<EditableCategoryEnum> categories,
			AsyncCallback<EditabilityConf> callback);

	void updateFieldEditability(List<FieldEditability> fieldEditList,
			AsyncCallback<List<FieldEditability>> callback);

	void deleteCountry(Country country, AsyncCallback<Boolean> callback);

	void permDeleteCountry(Country country, AsyncCallback<Void> callback);

	void deleteState(State state, AsyncCallback<Boolean> callback);

	void permDeleteState(State state, AsyncCallback<Void> callback);

	void deleteTitle(Title title, AsyncCallback<Boolean> callback);

	void permDeleteTitle(Title title, AsyncCallback<Void> callback);

	void deleteLanguage(Language language, AsyncCallback<Boolean> callback);

	void permDeleteLanguage(Language language, AsyncCallback<Void> callback);

	void deleteNationality(Nationality nationality,
			AsyncCallback<Boolean> callback);

	void permDeleteNationality(Nationality nationality,
			AsyncCallback<Void> callback);

	void deletePayMethod(PaymentMethod method, AsyncCallback<Boolean> callback);

	void permDeletePayMethod(PaymentMethod method, AsyncCallback<Void> callback);

/*	void deleteRsvStatus(ReservationStatus status,
			AsyncCallback<Boolean> callback);

	void permDeleteRsvStatus(ReservationStatus status,
			AsyncCallback<Void> callback);*/

	void deleteRoomStatus(RoomStatus status, AsyncCallback<Boolean> callback);

	void permDeleteRoomStatus(RoomStatus status, AsyncCallback<Void> callback);

	void saveInterfaceConf(InterfaceConfiguration conf,
			AsyncCallback<InterfaceConfiguration> callback);

	void getInterfaceConf(long propId,
			AsyncCallback<InterfaceConfiguration> callback);

	void getListIGuestUserView(AsyncCallback<List<IGuestUserView>> callback);
	void getAuthen(long propId, long orgId, AsyncCallback<AuthenticationConfig> callback);

		void SaveAuthen(AuthenticationConfig authen,
				AsyncCallback<AuthenticationConfig> callback);
	// Mutilanguage	
	void getLanguageMap(AsyncCallback<Map<String, String>> callback);

	void getIGuestUserProfileView(AsyncCallback<IGuestUserProfileView> callback);

	void saveExpressCheckInConfig(ExpressCheckInConfig expressCheckIn,
			AsyncCallback<ExpressCheckInConfig> callback);

	void getExpressCheckInConfig(long id,
			AsyncCallback<ExpressCheckInConfig> callback);

	void getDelicatedVideo(long propId, long orgId,
			AsyncCallback<DedicatedVideoConfig> callback);

	void saveDelicatedVideo(DedicatedVideoConfig delicatevideo,
			AsyncCallback<DedicatedVideoConfig> callback);

	void saveConstantsLanguageValue(ConstantsLanguageValue constants,
			AsyncCallback<ConstantsLanguageValue> callback);

	void getListConstantsLanguage(long propId, long orgId, String constants,
			AsyncCallback<List<ConstantsLanguageValue>> callback);

	void saveHousepeepingConfig(HouseKeepingConfig currentHousekeepingConf,
			AsyncCallback<HouseKeepingConfig> callback);

	void getHousekeepingConfig(long propertyId,
			AsyncCallback<HouseKeepingConfig> callback);

	void getInterfaceConfig(Long propertyId,
			AsyncCallback<InterfaceConfig> callback);

	void saveInterfaceConfig(InterfaceConfig currentInterConf,
			AsyncCallback<InterfaceConfig> callback);

}
